package actions;

import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedList;
import java.util.Map;

import org.apache.commons.io.IOUtils;

import dominio.Producto;
import dominio.Usuario;

import com.google.appengine.api.datastore.Blob;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class modificarProducto extends ActionSupport{
	
	private static final long serialVersionUID = 1L;
	
	private long id;
	private String name;
	private String descripcion;
	private double precio;
	private int stock;
	private String fileBlob;
	private InputStream fileStream=null;
	private String id_categoria;
	
	private Producto pro;
	
	/* Lista de los productos disponibles */
	private LinkedList<Producto> productos; 
	
	public LinkedList<Producto> getProductos() {
		return productos;
	}

	public void setProductos(LinkedList<Producto> productos) {
		this.productos = productos;
	}
	
	
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public Producto getPro() {
		return pro;
	}

	public void setPro(Producto pro) {
		this.pro = pro;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public double getPrecio() {
		return precio;
	}
	public void setPrecio(double precio) {
		this.precio = precio;
	}
	public int getStock() {
		return stock;
	}
	public void setStock(int stock) {
		this.stock = stock;
	}
	
	public InputStream getFileStream() {
		return fileStream;
	}
	public void setFileStream(InputStream fileStream) {
		this.fileStream = fileStream;
	}
	
	
	public String getFileBlob() {
		return fileBlob;
	}
	public void setFileBlob(String file) {
		this.fileBlob = file;
	}
	
	
	public String getId_categoria() {
		return id_categoria;
	}

	public void setId_categoria(String id_categoria) {
		this.id_categoria = id_categoria;
	}

	public String execute(){
		
		try {
			try{
				fileStream = IOUtils.toInputStream(fileBlob,"iso-8859-1");
			}catch(Exception e){}
			/* Obtenemos el id del propietario */
			Map session = ActionContext.getContext().getSession();
			if (session.get("usu")!=null){
				
				Usuario aux = (Usuario)session.get("usu");
				
				/* Creamos el objeto procuto */
				if (fileStream==null){
					pro = new Producto(name, descripcion, precio, stock, aux.getId(),Long.parseLong(id_categoria));
				}else{
					pro = new Producto(name, descripcion, precio, stock, new Blob(IOUtils.toByteArray(fileStream)), aux.getId(),Long.parseLong(id_categoria));
				}
				pro.setId(id);
				Producto pro2 = new Producto();/*Producto.read(id,false);*/
				pro2=pro2.update(pro,true);
				/* Rellenamos la lista de productos */
				/* Obtenemos de la base de datos los procutos disponibles */
				productos = Producto.readByUserId(aux.getId(), false);
				return SUCCESS;
			}
			else{
				/* El usuario no est� logueado */
				return ERROR;
			}
			
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return ERROR;
		}
		
		
	}
	
	

}
